/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dbwrapper;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.xml.sax.SAXException;

/**
 * Подключение к базе банных
 * @author alexxxey
 */
public class DbConnection
{       
    /**
     * Подключение к базе данных.
     *
     * При первом обращении объект соединения создается,
     * при последующих обращениях повторно используется.
     * 
     * @return Соединение
     */
    synchronized public static Connection getConnection() 
            throws SQLException, SAXException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException 
    {
        if (m_conn == null)
        {            
            DbConfig cfg = new DbConfig(CONFIG_FILE);
                        
            String driver = "org.apache.derby.jdbc.ClientDriver";
            String connectionURL = "jdbc:derby:" + 
                    cfg.getDatabaseSource() + 
                    ";create=true;" + 
                    "user=" + cfg.getUsername() + ";" + 
                    ";password=" + cfg.getPassword() + ";";
            
            Class.forName(driver).newInstance();             
            m_conn = DriverManager.getConnection(connectionURL);
        }

        return m_conn;
    }
            
    private final static String CONFIG_FILE = "connection_config.xml";      
    private static Connection m_conn = null;
}
